package br.com.sig.cadastro.pessoas.business.model.entity;

import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
import javax.persistence.Column;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;

import br.com.sig.business.model.entity.BaseEntity;
import br.com.sig.cadastro.pessoas.business.model.embeddable.MeioDeContato;
import br.com.sig.cadastro.recursoshumanos.business.model.entity.Cargo;
import br.com.sig.cadastro.recursoshumanos.business.model.entity.Departamento;

/**
 * Entity implementation class for Entity: PessoaFisica
 *
 */
@Entity
@Table(schema="sig_cadastro", name="contato")
public class Contato extends BaseEntity{

	private static final long serialVersionUID = -5951123583416787161L;
	
	private PessoaFisica pessoaFisica;
	private Cargo cargo;
	private Departamento departamento;
	private MeioDeContato meioDeContato;
	private String observacao;

	@NotNull
	@OneToOne
	@JoinColumn(name = "pessoa_fisica_id", nullable = false)
	public PessoaFisica getPessoaFisica() {
		return pessoaFisica;
	}

	public void setPessoaFisica(PessoaFisica pessoaFisica) {
		this.pessoaFisica = pessoaFisica;
	}

	@NotNull
	@ManyToOne
	@JoinColumn(nullable = false)	
	public Cargo getCargo() {
		return cargo;
	}
	
	public void setCargo(Cargo cargo) {
		this.cargo = cargo;
	}
	
	@NotNull
	@ManyToOne
	@JoinColumn(nullable = false)
	public Departamento getDepartamento() {
		return departamento;
	}
	
	public void setDepartamento(Departamento departamento) {
		this.departamento = departamento;
	}
	
	@Embedded
	@AttributeOverrides({
		@AttributeOverride(name = "telefoneComercial", column = @Column(name="telefone_comercial", nullable = false)),
		@AttributeOverride(name = "telefoneFixo", column = @Column(name="telefone_fixo")),
		@AttributeOverride(name = "telefoneMovel", column = @Column(name="telefone_movel", nullable = false)),
		@AttributeOverride(name = "fax", column = @Column(name="fax")),
		@AttributeOverride(name = "email", column = @Column(name="email", nullable = false))
	})
	@NotNull	
	public MeioDeContato getMeioDeContato() {
		return meioDeContato;
	}
	
	public void setMeioDeContato(MeioDeContato meioDeContato) {
		this.meioDeContato = meioDeContato;
	}
	
	public String getObservacao() {
		return observacao;
	}
	
	public void setObservacao(String observacao) {
		this.observacao = observacao;
	}
	
}